home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung (Tewi)(1994).iso / magazine / drdobbs / 1987 / 12 / naro / loc.h < prev    next >
Text File  |  1987-12-21  |  9KB  |  98 lines

  1. #define  MAX_TOKEN      80                                                                   
  2. #define  MAX_LINE       80                                                                   
  3. #define  FILENAME       80                                                                   
  4. #define  COMMAND_LINE   256                                                                  
  5.                                                                                              
  6. #define  PAGE_SIZE      512                                                                  
  7.                                                                                              
  8. #define  ERROR    0     /* Error condition exists */                                         
  9. #define  OK       1     /* No error(s) detected */                                           
  10.                                                                                              
  11. #define  T_EOL    -2    /* Reached the end of a line */                                      
  12. #define  T_ERROR  -1    /* Detected an error condition */                                    
  13. #define  T_OK     0     /* Everything fine */                                                
  14. #define  T_OCT    1     /* Octal format integer */                                           
  15. #define  T_DEC    2     /* Decimal format integer */                                         
  16. #define  T_HEX    3     /* Hexidecimal format integer */                                     
  17. #define  T_WORD   4     /* Symbol character string */                                        
  18. #define  T_OP     5     /* Operator character string */                                      
  19.                                                                                              
  20. typedef  enum  { FALSE = 0, TRUE }  BOOLEAN ;                                                
  21.                                                                                              
  22. #define  low_byte(x)    ((x) & 0xff)                                                         
  23. #define  high_byte(x)   (low_byte((x) >> 8))                                                 
  24. #define  dim(x)         (sizeof(x)/sizeof(x[0]))                                             
  25.                                                                                              
  26. typedef  struct {                                                                            
  27.       unsigned int   signature ;                                                             
  28.       unsigned int   length ;                                                                
  29.       unsigned int   pages ;                                                                 
  30.       unsigned int   reloc_items ;                                                           
  31.       unsigned int   header_size ;                                                           
  32.       unsigned int   min_para ;                                                              
  33.       unsigned int   max_para ;                                                              
  34.       unsigned int   stack_seg_disp ;                                                        
  35.       unsigned int   initial_sp ;                                                            
  36.       unsigned int   checksum ;                                                              
  37.       unsigned int   initial_pc ;                                                            
  38.       unsigned int   code_seg_disp ;                                                         
  39.       unsigned int   first_reloc_item ;                                                      
  40.       unsigned int   overlay_num ;                                                           
  41.    } EXE_HEADER ;                                                                            
  42.                                                                                              
  43.                                                                                              
  44. typedef  struct sym_list  {                                                                  
  45.             struct sym_list *next ;                                                          
  46.             char  name[32] ;                                                                 
  47.             unsigned int   value ;                                                           
  48.             unsigned char  type ;                                                            
  49.          } SYMBOL_LIST ;                                                                     
  50.                                                                                              
  51. typedef  struct  seg_descriptor  {                                                           
  52.             struct seg_descriptor   *next ;                                                  
  53.             long  position ;                                                                 
  54.             char  name[32] ;                                                                 
  55.             char  class[32] ;                                                                
  56.             unsigned int   vseg ;                                                            
  57.             unsigned int   pseg ;                                                            
  58.             unsigned int   offset ;                                                          
  59.             unsigned int   len ;                                                             
  60.             int   inited ;                                                                   
  61.             int   romable ;                                                                  
  62.             unsigned int   symbols ;                                                         
  63.             SYMBOL_LIST *symbol_list ;                                                       
  64.          } SEG_DESCRIPTOR ;                                                                  
  65.                                                                                              
  66. char  *load_exe_file() ;                                                                     
  67. SEG_DESCRIPTOR *build_seg_list() ;                                                           
  68.                                                                                              
  69. int   get_ch() ;                                                                             
  70. int   unget_ch() ;                                                                           
  71. char  *get_cmd() ;                                                                           
  72. char  *get_line() ;                                                                          
  73.                                                                                              
  74. int get_token() ;                                                                            
  75.                                                                                              
  76. char  *get_mem(unsigned long) ;                                                              
  77. void  free_mem(char *) ;                                                                     
  78.                                                                                              
  79. char  *process_command_line() ;                                                              
  80. void  read_symbol_table(SEG_DESCRIPTOR *) ;                                                  
  81.                                                                                              
  82. void  output_hex_OMF(int, SEG_DESCRIPTOR *, unsigned char *) ;                               
  83. void  open_file_system() ;                                                                   
  84. void  close_file_system() ;                                                                  
  85. void  break_handler() ;                                                                      
  86.                                                                                              
  87. #define  DATA_RECORD    0                                                                    
  88. #define  EOF_RECORD     1                                                                    
  89. #define  ADDR_RECORD    2                                                                    
  90. #define  START_RECORD   3                                                                    
  91.                                                                                              
  92. void  write_START_record(int, unsigned char *) ;                                             
  93. void  write_ADDR_record(int, unsigned int ) ;                                                
  94. void  write_DATA_record(int, unsigned int, unsigned char *,                                  
  95.                            unsigned int ) ;                                                  
  96. void  write_EOF_record(int) ;                                                                
  97. void  output_hex_record(int, unsigned char, unsigned int,                                    
  98.                            unsigned char *, unsigned char) ;;